#include <iostream>
using namespace std;

int s[21][21][21];
inline int max(const int &a,const int &b){
	return a>b ? a:b;
}
inline int min(const int &a,const int &b){
	return a<b ? a:b;
}
void cut(int W,int H,int M){
	for(int m=2; m<=M; m++)
		for(int w=1; w<=W; w++)
			for(int h=1; h<=H; h++){
				int min_1 = w*h, min_2 = w*h;
				for(int i=1; i<w; i++)
					for(int k=1; k<m; k++ )
						min_1 = min(min_1,max(s[i][h][k],s[w-i][h][m-k]));
					
				for(int i=1; i<h; i++)
					for(int k=1; k<m; k++)
						min_2 = min(min_2,max(s[w][i][k],s[w][h-i][m-k]));
				s[w][h][m] = min(min_1,min_2);
			}
}
int main(){
	freopen("in.txt","r",stdin);
	int w,h,m;
	while( true ){
		cin >> w >> h >> m;
		if( w==0 && h==0 && m==0 ) break;
		for(int i=1; i<=w; i++){
			for(int j=1; j<=h; j++)
				s[i][j][1] = i*j;
		}
		cut(w,h,m);
		cout << s[w][h][m] << endl;
	}
	return 0;	
}
